<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>移动端UI设计规范 | 前端一锅煮</title>
    <meta name="description" content="移动端UI设计规范">
    <link rel="icon" href="/blog/logo.jpg">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="msapplication-TileColor" content="#000000">
    <meta name="keywords" content="前端一锅煮,移动端UI设计规范">
    <link rel="preload" href="/blog/assets/css/0.styles.3a36f1f3.css" as="style"><link rel="preload" href="/blog/assets/js/app.2d50d9dc.js" as="script"><link rel="preload" href="/blog/assets/js/20.4ce40a8a.js" as="script"><link rel="prefetch" href="/blog/assets/js/10.cf06b472.js"><link rel="prefetch" href="/blog/assets/js/11.57a175c6.js"><link rel="prefetch" href="/blog/assets/js/12.b32f2db2.js"><link rel="prefetch" href="/blog/assets/js/13.818a88b3.js"><link rel="prefetch" href="/blog/assets/js/14.1c54dd87.js"><link rel="prefetch" href="/blog/assets/js/15.40ea867f.js"><link rel="prefetch" href="/blog/assets/js/16.379721e3.js"><link rel="prefetch" href="/blog/assets/js/17.0b8bcd15.js"><link rel="prefetch" href="/blog/assets/js/18.41bb3889.js"><link rel="prefetch" href="/blog/assets/js/19.6362af40.js"><link rel="prefetch" href="/blog/assets/js/2.55dfcea5.js"><link rel="prefetch" href="/blog/assets/js/21.ba4dcc65.js"><link rel="prefetch" href="/blog/assets/js/22.d2fad5dd.js"><link rel="prefetch" href="/blog/assets/js/23.2a976f6d.js"><link rel="prefetch" href="/blog/assets/js/24.a6407b77.js"><link rel="prefetch" href="/blog/assets/js/25.28818591.js"><link rel="prefetch" href="/blog/assets/js/26.a4d6759f.js"><link rel="prefetch" href="/blog/assets/js/27.fe72fdf4.js"><link rel="prefetch" href="/blog/assets/js/28.ca4a85a9.js"><link rel="prefetch" href="/blog/assets/js/29.4c6c0c28.js"><link rel="prefetch" href="/blog/assets/js/3.e235257b.js"><link rel="prefetch" href="/blog/assets/js/30.6aa9a972.js"><link rel="prefetch" href="/blog/assets/js/31.b7bccc14.js"><link rel="prefetch" href="/blog/assets/js/32.3544b6a6.js"><link rel="prefetch" href="/blog/assets/js/33.3bb697fd.js"><link rel="prefetch" href="/blog/assets/js/34.ac7cecf3.js"><link rel="prefetch" href="/blog/assets/js/35.b26fe96f.js"><link rel="prefetch" href="/blog/assets/js/36.91eb88f8.js"><link rel="prefetch" href="/blog/assets/js/37.baa3c248.js"><link rel="prefetch" href="/blog/assets/js/4.04108111.js"><link rel="prefetch" href="/blog/assets/js/5.2e3bc3e6.js"><link rel="prefetch" href="/blog/assets/js/6.88208dc4.js"><link rel="prefetch" href="/blog/assets/js/7.7913f494.js"><link rel="prefetch" href="/blog/assets/js/8.64ff3aa5.js"><link rel="prefetch" href="/blog/assets/js/9.43d70a25.js">
    <link rel="stylesheet" href="/blog/assets/css/0.styles.3a36f1f3.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/blog/" class="home-link router-link-active"><!----> <span class="site-name">前端一锅煮</span></a> <div class="links" style="max-width:nullpx;"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/blog/" class="nav-link">首页</a></div><div class="nav-item"><a href="/blog/page/list/" class="nav-link router-link-active">全部文章</a></div><div class="nav-item"><a href="/blog/page/vuepress/" class="nav-link">VuePress笔记</a></div><div class="nav-item"><a href="/blog/page/about/" class="nav-link">关于我</a></div> <a href="https://gitee.com/cjm0/blog" target="_blank" rel="noopener noreferrer" class="repo-link">
    Gitee
    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/blog/" class="nav-link">首页</a></div><div class="nav-item"><a href="/blog/page/list/" class="nav-link router-link-active">全部文章</a></div><div class="nav-item"><a href="/blog/page/vuepress/" class="nav-link">VuePress笔记</a></div><div class="nav-item"><a href="/blog/page/about/" class="nav-link">关于我</a></div> <a href="https://gitee.com/cjm0/blog" target="_blank" rel="noopener noreferrer" class="repo-link">
    Gitee
    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav>  <ul class="sidebar-links"><li><div class="sidebar-group first"><p class="sidebar-heading open"><span>移动端UI设计规范</span> <!----></p> <ul class="sidebar-group-items"><li><a href="/blog/page/list/fe_design.html#边距、间距" class="sidebar-link">边距、间距</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#模块边距" class="sidebar-link">模块边距</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#模块间距" class="sidebar-link">模块间距</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#内容间距" class="sidebar-link">内容间距</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#内容边距" class="sidebar-link">内容边距</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#列表" class="sidebar-link">列表</a></li></ul></li><li><a href="/blog/page/list/fe_design.html#全局规则" class="sidebar-link">全局规则</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#图片比例" class="sidebar-link">图片比例</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#字体" class="sidebar-link">字体</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#颜色" class="sidebar-link">颜色</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#阴影" class="sidebar-link">阴影</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#文案" class="sidebar-link">文案</a></li></ul></li><li><a href="/blog/page/list/fe_design.html#优化事项" class="sidebar-link">优化事项</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#重点突出" class="sidebar-link">重点突出</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#流程明确" class="sidebar-link">流程明确</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#异常可控，有路可退" class="sidebar-link">异常可控，有路可退</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#减少输入" class="sidebar-link">减少输入</a></li><li class="sidebar-sub-header"><a href="/blog/page/list/fe_design.html#减少等待，反馈及时" class="sidebar-link">减少等待，反馈及时</a></li></ul></li></ul></div></li></ul> </div> <div class="page"> <div class="content"><h1 id="移动端ui设计规范"><a href="#移动端ui设计规范" class="header-anchor">#</a> 移动端UI设计规范</h1> <h2 id="边距、间距"><a href="#边距、间距" class="header-anchor">#</a> 边距、间距</h2> <p>原则：边距（左右）要大于间距（上下）。</p> <h3 id="模块边距"><a href="#模块边距" class="header-anchor">#</a> 模块边距</h3> <p>10px、12px、15px、16px</p> <p>15px 常用</p> <p>10px 最小，要展示更多的内容才用</p> <h3 id="模块间距"><a href="#模块间距" class="header-anchor">#</a> 模块间距</h3> <p>8px、10px、15px、16px、20px</p> <p>常用 10px 15px 20px</p> <h3 id="内容间距"><a href="#内容间距" class="header-anchor">#</a> 内容间距</h3> <p>5px 10px 15px</p> <h3 id="内容边距"><a href="#内容边距" class="header-anchor">#</a> 内容边距</h3> <p>5px 10px 15px</p> <h3 id="列表"><a href="#列表" class="header-anchor">#</a> 列表</h3> <p>最小高度 40px</p> <p>单行 53px 55px 66px</p> <h2 id="全局规则"><a href="#全局规则" class="header-anchor">#</a> 全局规则</h2> <h3 id="图片比例"><a href="#图片比例" class="header-anchor">#</a> 图片比例</h3> <p>16:9、4:3、3:2、1:1 和 1:0.618（黄金比例）。</p> <h3 id="字体"><a href="#字体" class="header-anchor">#</a> 字体</h3> <p>原则：在同一个系统的 UI 设计中先建立体系化的设计思路，对主、次、辅助、标题、展示等类别的字体做统一的规划，再落地到具体场景中进行微调。少即是多，在视觉展现上用尽量少的样式去实现设计目的。避免毫无意义的使用大量字号、颜色、字重强调视觉重点或对比关系。</p> <p>字重，只出现 regular 以及 medium 的两种字体重量，分别对应代码中的 400 和 500，在英文字体加粗的情况下采用 semibold 的字体重量，对应代码中的 600。</p> <p>字号选择在 3-5 种之间，保持克制的原则。</p> <p>行高 1.4</p> <ul><li><p>12px 提示语</p></li> <li><p>14px 主文字</p></li> <li><p>16px 标题</p></li> <li><p>18px 大标题</p></li> <li><p>20px 最大标题</p></li></ul> <h3 id="颜色"><a href="#颜色" class="header-anchor">#</a> 颜色</h3> <p>确定主题色，定义好字体、背景、禁用、线条边框、红橙黄绿蓝等色值。</p> <p>每种色值最多配有 2~3 种浅谈变化，比如文字可有主、次、提示等三种（#333 #666 #999）。</p> <p>使用的大颜色种类不可过多，常用的有黑、白、主题色、绿-成功、红-失败、黄-警告。</p> <h3 id="阴影"><a href="#阴影" class="header-anchor">#</a> 阴影</h3> <p>离地面越远的物体，产生的阴影颜色越淡、模糊度越高、面积越大；反之则颜色更深、模糊度越低、面积越小。</p> <p>阴影向下：主要应用于组件内部或组件本身，是比较常规场景的用法</p> <p>阴影向上：主要应用于底部导航或工具栏等</p> <p>阴影向左：主要应用于右边导航栏、抽屉组件或固定表格栏</p> <p>阴影向右：主要应用于左边导航栏、抽屉组件或固定表格栏</p> <p>一级阴影</p> <div class="language-css extra-class"><pre class="language-css"><code><span class="token atrule"><span class="token rule">@shadow_1_down</span><span class="token punctuation">:</span>
0px 1px 2px -2px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.16<span class="token punctuation">)</span><span class="token punctuation">,</span>
0px 3px 6px 0px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.12<span class="token punctuation">)</span><span class="token punctuation">,</span>
0px 5px 12px 4px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.09<span class="token punctuation">)</span><span class="token punctuation">;</span></span>
</code></pre></div><p>二级阴影</p> <div class="language-css extra-class"><pre class="language-css"><code><span class="token atrule"><span class="token rule">@shadow_2_down</span><span class="token punctuation">:</span>
0px 3px 6px -4px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.12<span class="token punctuation">)</span><span class="token punctuation">,</span>
0px 6px 16px 0px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.08<span class="token punctuation">)</span><span class="token punctuation">,</span>
0px 9px 28px 8px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.05<span class="token punctuation">)</span><span class="token punctuation">;</span></span>
</code></pre></div><p>三级阴影</p> <div class="language-css extra-class"><pre class="language-css"><code><span class="token atrule"><span class="token rule">@shadow_3_down</span><span class="token punctuation">:</span>
0px 6px 16px -8px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.08<span class="token punctuation">)</span><span class="token punctuation">,</span>
0px 9px 28px 0px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.05<span class="token punctuation">)</span><span class="token punctuation">,</span>
0px 12px 48px 16px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.03<span class="token punctuation">)</span><span class="token punctuation">;</span></span>
</code></pre></div><h3 id="文案"><a href="#文案" class="header-anchor">#</a> 文案</h3> <p>语言文字的表述需要精心推敲，仔细设计。清晰、准确、简洁的文案设计能够让界面拥有更好的可用性，同时让用户体验更加友好。</p> <h4 id="以用户为中心"><a href="#以用户为中心" class="header-anchor">#</a> 以用户为中心</h4> <p>文案以用户为主体来写作。比如：当用户向后台反馈问题、提出建议或申诉时，使用「我们」是合理的语境，例如「我们将会审核你的申诉」。</p> <h4 id="精简语句"><a href="#精简语句" class="header-anchor">#</a> 精简语句</h4> <p>省略无用词汇，不重复用户已知事实；在绝大多数交互场景下，都无需界面描述出全部的细节。尽量提供简短、易于快速获取的内容。比如：保存而不是保存修改。</p> <h4 id="使用用户熟悉的语言"><a href="#使用用户熟悉的语言" class="header-anchor">#</a> 使用用户熟悉的语言</h4> <p>站在用户的角度，说用户熟悉的话。使用简单、直接、易于理解的词汇，让内容和指示更容易被用户接受和理解。间接、暧昧模糊的说法，生僻和过于「文雅」的用词，会增加用户的认知负荷，所以应当尽量避免使用这类用户无法识别的词汇。</p> <h4 id="表述一致"><a href="#表述一致" class="header-anchor">#</a> 表述一致</h4> <ul><li><p>描述同一个事物的词汇要保持统一；</p></li> <li><p>上下文的语法、语种、语序要保持统一；</p></li> <li><p>操作的名称和目标页面标题的名称保持一致。</p></li></ul> <h4 id="用词精准完整"><a href="#用词精准完整" class="header-anchor">#</a> 用词精准完整</h4> <p>通用基本用词要规范，不要写错字，词语表达要完整。</p> <p>专业用语要精准，并是所属行业认可通用用词；时间的表述必须明确。</p> <p>比如：其他（其它x）、抱歉（对不起）、验证码（4位或多位数字或字母图片）、校验码（手机收到的6位数字，验证用户的身份）、登录（登陆x）。</p> <h4 id="语气"><a href="#语气" class="header-anchor">#</a> 语气</h4> <p>直接使用「你」、「我」来和用户对话，与用户建立亲密感。避免使用「您」，让用户感觉太过疏远。</p> <p>不要在同一个句式中混用「你」和「我」，交互中指代混乱会让用户相当纠结。</p> <p>多给用户支持与鼓励，不要命令和强迫用户，比如：请输入字母数字组合而不是不能输入字符。</p> <h4 id="大小写和标点符号"><a href="#大小写和标点符号" class="header-anchor">#</a> 大小写和标点符号</h4> <ul><li><p>产品名称全称，首字母大写。产品名称缩写需要全部大写，如：ESC、SLB 等；</p></li> <li><p>正确使用专有名词的大小写规范 iOS Android；</p></li> <li><p>全英文的标题，标签，菜单项等等都要遵循英文句式中首字母大写的规范；</p></li> <li><p>统计数据使用阿拉伯数字，你有 3 条短消息；</p></li> <li><p>谨慎使用感叹号。</p></li></ul> <h2 id="优化事项"><a href="#优化事项" class="header-anchor">#</a> 优化事项</h2> <h3 id="重点突出"><a href="#重点突出" class="header-anchor">#</a> 重点突出</h3> <p>每个页面都应有明确的重点，以便于用户每进入一个新页面的时候都能快速地理解页面内容。在确定了重点的前提下，应尽量避免页面上出现其它与用户的决策和操作无关的干扰因素。</p> <h3 id="流程明确"><a href="#流程明确" class="header-anchor">#</a> 流程明确</h3> <p>为了让用户顺畅地使用页面，在用户进行某一个操作流程时，应避免出现用户目标流程之外的内容而打断用户。</p> <h3 id="异常可控，有路可退"><a href="#异常可控，有路可退" class="header-anchor">#</a> 异常可控，有路可退</h3> <p>在设计任何的任务和流程时，异常状态和流程往往容易被忽略，而这些异常场景往往是用户最为沮丧和需要帮助的时候，因此需要格外注意异常状态的设计，在出现异常时予以用户必要的状态提示，并告知解决方案，使其有路可退。</p> <p>要杜绝异常状态下，用户莫名其妙又无处可去，停滞在某一个页面的情况。</p> <p>表单报错，在表单顶部告知错误原因，并标识出错误字段提示用户修改。</p> <h3 id="减少输入"><a href="#减少输入" class="header-anchor">#</a> 减少输入</h3> <p>由于手机键盘区域小且密集，输入困难的同时还易引起输入错误，因此在设计小程序页面时应尽量减少用户输入，利用现有接口或其他一些易于操作的选择控件来改善用户输入的体验。</p> <h3 id="减少等待，反馈及时"><a href="#减少等待，反馈及时" class="header-anchor">#</a> 减少等待，反馈及时</h3> <p>页面的过长时间的等待会引起用户的不良情绪，当出现加载和等待的时候，需要予以及时的反馈以舒缓用户等待的不良情绪。</p> <p>数据加载：进页面、下拉刷新、上滑请求。</p> <p>局部加载：点击提交按钮，增加、删除、修改数据。</p></div> <div class="page-edit"><div class="edit-link"><a href="https://gitee.com/cjm0/blog/edit/master/docs/page/list/fe_design.md" target="_blank" rel="noopener noreferrer">在 Gitee 上编辑此页</a> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div> <!----></div> <!----> </div> <!----></div></div>
    <script src="/blog/assets/js/app.2d50d9dc.js" defer></script><script src="/blog/assets/js/20.4ce40a8a.js" defer></script>
  </body>
</html>
